﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid;
using DevExpress.Utils;

using DevExpress.XtraEditors.Repository;
using DevExpress.XtraEditors;

using MM.Entities;
using MM.Business;  

namespace MM
{
    public partial class frmTaoPhieuNK_GiaCong : Form
    {
        public List<CHI_TIET_PNH> lstCT = new List<CHI_TIET_PNH>();
        public List<VAT_TU_PHU_TUNG> lstVTPT = new List<VAT_TU_PHU_TUNG>();
        string _matau = "";
        string _nguoitao = "";
        string _sConn = "";
        frmTimKiemVTPT frm;
        frmTimKiemTheoHinh frm1;
        frmImpa_TimKiem frm2;
        frmImpa_TimKiemTheoHinh frm3;

        public frmTaoPhieuNK_GiaCong(string sConn)
        {
            InitializeComponent();
            _sConn = sConn;


            this.InitForm();
            this.InitDMKho(_matau);
            
        }
        private void InitForm()
        {
            _matau = frmDangNhap.objTau._tenTau2KiTu;
            _nguoitao = frmDangNhap.objTaiKhoan._soCMND;

            this.txtNgayThucHien.Text = DateTime.Today.Day.ToString() + "/" + DateTime.Today.Month.ToString() + "/" + DateTime.Today.Year.ToString();
            this.txtNguoiThucHien.Text = _nguoitao;            

            this.gridControl1.DataSource = lstCT;  
            
        }
        private void InitDMKho(string matau)
        {
            clsKHO khoCtrl = new clsKHO(_sConn);
            List<KHO> lstKho = new List<KHO>();
            //List<KHO> lstKho1 = new List<KHO>();
            lstKho = khoCtrl.LoadKHOByTAU(matau);
            //lstKho1 = khoCtrl.LoadKHOByTAU(matau);

            this.lookupKho.DataSource = lstKho;
            this.lookupKho.DisplayMember = "MaKho";
            this.lookupKho.ValueMember = "MaKho";

            //this.lookUpEdit1.Properties.DataSource = lstKho1;
            //this.lookUpEdit1.Properties.DisplayMember = "MaKho";
            //this.lookUpEdit1.Properties.ValueMember = "TenKho";


        }
        private void cmdThemVTPT_Click(object sender, EventArgs e)
        {
            try
            {
                CHI_TIET_PNH objCT = new CHI_TIET_PNH();

                if (lstVTPT.Count == 0) // người dùng tự điền mã
                {
                   
                    // kiểm tra tồn tại của VTPT                   

                    VAT_TU_PHU_TUNG obj = new VAT_TU_PHU_TUNG();

                    clsVAT_TU_PHU_TUNG vtptCtrl = new clsVAT_TU_PHU_TUNG(_sConn);

                    obj = vtptCtrl.SelectVAT_TU_PHU_TUNG(this.txtMaVTPT.Text.Trim(),frmDangNhap.objTau.maTau);
                    if (obj != null && obj._maVTPT != "" && obj._maVTPT!=null)
                    {
                        objCT.MaChiTiet = lstCT.Count + 1;
                        objCT.MaVTPT = obj._maVTPT;
                        objCT.TenVTPT = obj._tenVTPT;
                        objCT.SoLuong = 0;//float.Parse(this.txtSoLuong.Text);
                        //objCT.MaKho = this.lookUpEdit1.GetColumnValue("MaKho").ToString();
                        objCT.MaTrangThai = 2;
                        objCT.TenTrangThai = "HÀNG CŨ";



                        // Kiem tra đã tồn tại trong danh sách
                        int index = -1;
                        index = lstCT.FindIndex(delegate(CHI_TIET_PNH x) { return x.MaVTPT == objCT.MaVTPT; });
                        if (index >= 0)
                            lstCT[index].SoLuong += objCT.SoLuong;
                        else
                            lstCT.Add(objCT);
                    }
                    else
                    {
                        MessageBox.Show("MÃ VẬT TƯ PHỤ TÙNG KHÔNG TỒN TẠI");
                        return;
                    }
                }

                for (int i = 0; i < lstVTPT.Count; i++)
                {
                    objCT = new CHI_TIET_PNH();
                    objCT.MaChiTiet = lstCT.Count + 1;
                    objCT.MaVTPT = lstVTPT[i]._maVTPT;
                    objCT.TenVTPT = lstVTPT[i]._tenVTPT;
                   // objCT.SoLuong = float.Parse(this.txtSoLuong.Text);
                    objCT.MaTrangThai = 2;
                    objCT.TenTrangThai = "HÀNG CŨ";
                  //  objCT.MaKho = this.lookUpEdit1.GetColumnValue("MaKho").ToString();
                    // Kiem tra đã tồn tại trong danh sách
                    int index = -1;
                    index = lstCT.FindIndex(delegate(CHI_TIET_PNH x) { return x.MaVTPT == objCT.MaVTPT && x.MaKho==objCT.MaKho; });
                    if (index >= 0)
                        lstCT[index].SoLuong += objCT.SoLuong;
                    else
                        lstCT.Add(objCT);
                }

                lstVTPT.Clear();

                
                this.gridControl1.RefreshDataSource();
                this.gridDSVT.FocusedRowHandle = lstCT.Count - 1;

                this.txtMaVTPT.Focus();
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message); }
        }

        private void label5_Click(object sender, EventArgs e)
        {

        }

        private void gridDSVT_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            ColumnView col = (ColumnView)this.gridControl1.FocusedView;
            try
            {
                gridDSVT.PostEditor();
                gridDSVT.UpdateCurrentRow();

                int rowidx = e.RowHandle;
                lstCT[rowidx].SoLuong = int.Parse(this.gridDSVT.GetFocusedRowCellValue("SoLuong").ToString());
                lstCT[rowidx].MaKho = this.gridDSVT.GetFocusedRowCellValue("MaKho").ToString();

            }
            catch { }
        }

        private void cmdLuu_Click(object sender, EventArgs e)
        {
            PHIEU_NHAP_HANG oPNH = new PHIEU_NHAP_HANG();
            clsPHIEU_NHAP_HANG pnhCtrl = new clsPHIEU_NHAP_HANG(_sConn);
            List<CHI_TIET_PNH> lstCTPNH = new List<CHI_TIET_PNH>();
            CHI_TIET_PNH obj;

            oPNH.MaTau = _matau;
            oPNH.NgayNhap = DateTime.Today;
            oPNH.NguoiNhap = _nguoitao;
            oPNH.POThamChieuSAP = "";

            for (int i = 0; i < lstCT.Count; i++)
            {
                if (lstCT[i].SoLuong > 0 && lstCT[i].MaKho.Trim() != "")
                {
                    obj = new CHI_TIET_PNH();
                    obj.MaChiTietPDH = 0;
                    obj.MaVTPT = lstCT[i].MaVTPT;
                    obj.MaKho = lstCT[i].MaKho;
                    obj.SoLuong = lstCT[i].SoLuong;
                    obj.MaTrangThai = lstCT[i].MaTrangThai;

                    lstCTPNH.Add(obj);
                }
            }

            // lưu dữ liệu      
            if (lstCTPNH.Count > 0)
            {
                string maphieunhaphang = pnhCtrl.InsertPHIEU_NHAP_HANG(oPNH, lstCTPNH);
                if (maphieunhaphang == "" || maphieunhaphang.Length != 10)
                    MessageBox.Show("LƯU KHÔNG THÀNH CÔNG");
                else
                    this.txtMaPhieuNhapHang.Text = maphieunhaphang;
                this.cmdLuu.Enabled = false;
            }
            else
                MessageBox.Show("VUI LÒNG NHẬP ĐẦY ĐỦ THÔNG TIN: SỐ LƯỢNG NHẬP - KHO ");
        }

        private void frmTaoPhieuNK_GiaCong_Paint(object sender, PaintEventArgs e)
        {
           // Common.PaintGradientColor(Color.LightYellow, Color.LightSkyBlue, System.Drawing.Drawing2D.LinearGradientMode.Vertical, this.Width, this.Height, this);            
        }

        private void cmdTimVTPT_Click(object sender, EventArgs e)
        {
            lstVTPT.Clear();
            frm.SelectLstMaterial += new frmTimKiemVTPT.SelectListMaterialHandler(LuuDSVTPT);
            frm.ShowDialog();
        }

        private void LuuDSVTPT(object sender, lstVtptEventArgs e)
        {
            lstVTPT = e.lstVtpt;
            if (lstVTPT.Count == 1)
            {
                this.txtMaVTPT.Text = lstVTPT[0]._maVTPT;
                this.lblTenVTPT.Text = lstVTPT[0]._tenVTPT;
            }
        }

        private void tìmTheoNhiềuTiêuChíToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (frm == null)
            {
                frm = new frmTimKiemVTPT(_sConn,true);
                frm.SelectLstMaterial += new frmTimKiemVTPT.SelectListMaterialHandler(LuuDSVTPT);
            }
            else
                lstVTPT.Clear();
            frm.ShowDialog();
            if (lstVTPT.Count > 0)
            {
                if (lstVTPT.Count == 1)
                {
                    this.txtMaVTPT.Text = lstVTPT[0]._maVTPT;
                    this.lblTenVTPT.Text = lstVTPT[0]._tenVTPT;
                }
                else
                    MessageBox.Show("Có " + lstVTPT.Count.ToString() + " VTPT đang được chọn!\nVui lòng Bấm nút THÊM VÀO DS để đưa các VTPT vừa tìm kiếm vào Danh sách đặt hàng");
            }
        }

        private void tìmTheoHìnhToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (frm1 == null)
            {
                frm1 = new frmTimKiemTheoHinh(_sConn,true);
                frm1.SelectLstMaterialByImg += new frmTimKiemTheoHinh.SelectListMaterialByImgHandler(LuuDSVTPT);
            }
            else
                lstVTPT.Clear();
            frm1.ShowDialog();
            if (lstVTPT.Count > 0)
            {
                if (lstVTPT.Count == 1)
                {
                    this.txtMaVTPT.Text = lstVTPT[0]._maVTPT;
                    this.lblTenVTPT.Text = lstVTPT[0]._tenVTPT;
                }
                else
                    MessageBox.Show("Có " + lstVTPT.Count.ToString() + " VTPT đang được chọn!\nVui lòng Bấm nút THÊM VÀO DS để đưa các VTPT vừa tìm kiếm vào Danh sách đặt hàng");
            }
        }

        

        private void frmTaoPhieuNK_GiaCong_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F8)
            {
                cmdLuu_Click(null,null);
            }
        }

        

        private void lookupKho_EditValueChanged(object sender, EventArgs e)
        {
            try
            {
                LookUpEdit edit = (LookUpEdit)sender;
                this.gridDSVT.SetRowCellValue(gridDSVT.FocusedRowHandle, "MaKho", edit.Properties.GetDataSourceValue("MaKho", edit.ItemIndex));
            }
            catch { }
            
        }

        private void frmTaoPhieuNK_GiaCong_Load(object sender, EventArgs e)
        {
            Common.SetColor(this);
        }

        private void cmdTiepTuc_Click(object sender, EventArgs e)
        {
            lstCT.Clear();
            this.txtMaPhieuNhapHang.Text = "";
            this.cmdLuu.Enabled = true;
            this.gridControl1.RefreshDataSource();
        }

        private void tìmVTIMPATheoNhiềuTiêuChíToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (frm2 == null)
            {
                frm2 = new frmImpa_TimKiem(_sConn,true);
                frm2.SelectLstMaterial += new frmImpa_TimKiem.SelectListMaterialHandler(LuuDSVTPT);
            }
            else
                lstVTPT.Clear();
            frm2.ShowDialog();
            if (lstVTPT.Count > 0)
            {
                if (lstVTPT.Count == 1)
                {
                    this.txtMaVTPT.Text = lstVTPT[0]._maVTPT;
                    this.lblTenVTPT.Text = lstVTPT[0]._tenVTPT;
                }
                else
                    MessageBox.Show("Có " + lstVTPT.Count.ToString() + " VTPT đang được chọn!\nVui lòng Bấm nút THÊM VÀO DS để đưa các VTPT vừa tìm kiếm vào Danh sách đặt hàng");

            }
        }

        private void tìmVTIMPATheoHìnhToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (frm3 == null)
            {
                frm3 = new frmImpa_TimKiemTheoHinh(_sConn,true);
                frm3.SelectLstMaterial += new frmImpa_TimKiemTheoHinh.SelectListMaterialHandler(LuuDSVTPT);
            }
            else
                lstVTPT.Clear();
            frm3.ShowDialog();
            if (lstVTPT.Count > 0)
            {
                if (lstVTPT.Count == 1)
                {
                    this.txtMaVTPT.Text = lstVTPT[0]._maVTPT;
                    this.lblTenVTPT.Text = lstVTPT[0]._tenVTPT;
                }
                else
                    MessageBox.Show("Có " + lstVTPT.Count.ToString() + " VTPT đang được chọn!\nVui lòng Bấm nút THÊM VÀO DS để đưa các VTPT vừa tìm kiếm vào Danh sách đặt hàng");

            }
        }

        private void txtMaVTPT_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                // kiểm tra tồn tại của VTPT                   

                VAT_TU_PHU_TUNG obj = new VAT_TU_PHU_TUNG();

                clsVAT_TU_PHU_TUNG vtptCtrl = new clsVAT_TU_PHU_TUNG(_sConn);

                obj = vtptCtrl.SelectVAT_TU_PHU_TUNG(this.txtMaVTPT.Text.Trim(), frmDangNhap.objTau.maTau);
                if (obj != null && obj._maVTPT != "")
                {
                    this.lblTenVTPT.Text = obj._tenVTPT;
                    this.cmdThemVTPT.Enabled = true;
                }
                else
                {
                    MessageBox.Show("KHÔNG TÌM THẤY THÔNG TIN VẬT TƯ NÀY");
                    this.cmdThemVTPT.Enabled = false;
                }

            }
        }

        
       
    }
}